// 1.引入express模块
const express = require("express");
// const fs = require("fs");

// 引入路由模块
const router = require("./router.js");

// 引入bodyParser
const bodyParser = require("body-parser");

// 引入session模块
const session = require("express-session");

// 2.创建服务器
const app = express();

// 3.添加端口监听
app.listen(3000, () => {
  console.log("http://127.0.0.1:3000");
});

// 配置session
app.use(
  session({
    secret: "albx_eechon",
    resave: false,
    saveUninitialized: false
  })
);

// body-parser配置
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// 5.托管静态资源
app.use("/assets", express.static("assets"));
// 上面前一个路径是虚拟路径，后一个是相对于运行node的绝对路径
// 即前一个是我们在网址中输入访问的路径，后一个是实际物理存放的路径
app.use("/uploads", express.static("uploads"));

// 配置ejs模板引擎
app.set("view engine", "ejs");
// app.set('view engine','ejs')
// 配置ejs模版文件查询的默认目录，有这句代码，所有的ejs资源都会云指定的__dirname+"/views"
app.set("views", __dirname + "/views");

// 4.添加路由配置
// 已经搬至router

// 添加session的全局中间件，让每个请求都通过这个中间件
/**
 * 有三种场合是不用登录的，不用重定向
 * 1.登录页面
 * 2.前台页面
 * 3.有登录状态
 */
app.use(function(req, res, next) {
  // console.log(req.session)
  if (
    (req.session.isLogin && req.session.isLogin == "true") ||
    req.url == "/admin/login" ||
    req.url.indexOf("/admin") == -1
  ) {
    // 如果满足条件就跳到下一个中间件；
    next();
  } else {
    // 否侧就重定向
    res.redirect("/admin/login");
  }
});

// 最后使用router中间件
app.use(router);
